package com.example.project.entity;

import java.time.LocalDateTime;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import com.example.project.annotation.Excel;
import com.example.project.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 问题操作记录对象 t_issue_operation_records
 * 
 * @author system
 * @date 2025-11-21
 */
public class IssueOperationRecord extends BaseEntity {
    
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 问题ID */
    @Excel(name = "问题ID")
    private Long issueId;

    /** 项目ID */
    @Excel(name = "项目ID")
    private Long projectId;

    /** 操作人ID */
    @Excel(name = "操作人ID")
    private Long operatorId;

    /** 操作人姓名 */
    @Excel(name = "操作人")
    private String operatorName;

    /** 操作类型：1-领取需求，2-完成需求，3-发布需求，4-提交需求，5-审核通过，6-审核不通过 */
    @Excel(name = "操作类型")
    private Integer operationType;

    /** 操作内容 */
    @Excel(name = "操作内容")
    private String operationContent;

    /** 操作时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime operationTime;

    /** 客户名称 */
    @Excel(name = "相关客户")
    private String customerName;

    /** 需求名称 */
    @Excel(name = "相关需求")
    private String requirementName;

    /** 备注 */
    private String remarks;
    
    /** 扩展字段：关联用户信息 */
    private User user;
    
    /** 扩展字段：关联问题信息 */
    private Issue issue;
    
    /** 扩展字段：关联项目信息 */
    private Project project;

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setIssueId(Long issueId) {
        this.issueId = issueId;
    }

    public Long getIssueId() {
        return issueId;
    }

    public void setProjectId(Long projectId) {
        this.projectId = projectId;
    }

    public Long getProjectId() {
        return projectId;
    }

    public void setOperatorId(Long operatorId) {
        this.operatorId = operatorId;
    }

    public Long getOperatorId() {
        return operatorId;
    }

    public void setOperatorName(String operatorName) {
        this.operatorName = operatorName;
    }

    public String getOperatorName() {
        return operatorName;
    }

    public void setOperationType(Integer operationType) {
        this.operationType = operationType;
    }

    public Integer getOperationType() {
        return operationType;
    }

    public void setOperationContent(String operationContent) {
        this.operationContent = operationContent;
    }

    public String getOperationContent() {
        return operationContent;
    }

    public void setOperationTime(LocalDateTime operationTime) {
        this.operationTime = operationTime;
    }

    public LocalDateTime getOperationTime() {
        return operationTime;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setRequirementName(String requirementName) {
        this.requirementName = requirementName;
    }

    public String getRequirementName() {
        return requirementName;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

    public String getRemarks() {
        return remarks;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public Issue getIssue() {
        return issue;
    }

    public void setIssue(Issue issue) {
        this.issue = issue;
    }

    public Project getProject() {
        return project;
    }

    public void setProject(Project project) {
        this.project = project;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("issueId", getIssueId())
            .append("projectId", getProjectId())
            .append("operatorId", getOperatorId())
            .append("operatorName", getOperatorName())
            .append("operationType", getOperationType())
            .append("operationContent", getOperationContent())
            .append("operationTime", getOperationTime())
            .append("customerName", getCustomerName())
            .append("requirementName", getRequirementName())
            .append("remarks", getRemarks())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}